/** @format */
import { initState } from './state';
import { compileToFunction } from './compiler/index.js';
export function initMixin(Vue) {
  Vue.prototype._init = function (options) {
    //  数据劫持
    const vm = this; // vue中使用this.$options指代的就是用户传递的属性
    vm.$options = options;

    // 初始化状态
    initState(vm);

    if (vm.$options.el) {
      vm.$mount(vm.$options.el);
    }
  };

  Vue.prototype.$mount = function (el) {
    const vm = this;
    const options = vm.$options;
    el = document.querySelector(el);

    // 默认先查找有没有render方法，没有render会采用template template也没有就用中的内容
    if (!options.render) {
      // 对模板进行编译
      let template = options.tempalte; // 取出模板
      if (!template && el) {
        template = el.outerHTML;
      }

      const render = compileToFunction(template);
      options.render = render;
      console.log(render);
      // 我们需要将template转化成render方法，
    }

    // 渲染当前组件
    // TODO ...
  };
}
